﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Libreria.SICOM.Negocio;
using System.Configuration;
using Libreria.SICOM.Modelo;

namespace Web.SICOM.Controllers
{
    public class ProyectoController : Controller
    {
        //
        // GET: /Proyecto/

        public ActionResult Index()
        {

            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }

            ProyectoNegocio proyectobo = new ProyectoNegocio();
            ViewData.Model = proyectobo.ConsultarProyectos(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            if (((List<Proyecto>)ViewData.Model).Count == 0)
            {
                ViewData.Model = "No Hay Datos  de Proyectos Asociados";

            }
            return View();
        }

        public ActionResult Crear()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Insertar(Proyecto nuevoproyecto)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            List<Proyecto> proyectos = new ProyectoNegocio().ConsultarProyectos(cdc);
            for (int i = 0; i <= proyectos.Count - 1; i++)
            {
                if (proyectos[i].Identificador == nuevoproyecto.Identificador)
                {
                    ModelState.AddModelError("Identificador", "***El Codigo especificado ya se encuentra en uso***");
                }
                if (proyectos[i].Nombre == nuevoproyecto.Nombre)
                {
                    ModelState.AddModelError("Nombre", "***El Nombre especificado ya se encuentra en uso***");
                }

            }

            if (!ModelState.IsValid)
            {
                return View("Crear", nuevoproyecto);
            }

            Int32? id = nuevoproyecto.Identificador;
            String name = nuevoproyecto.Nombre;
            new ProyectoNegocio().CrearProyecto(id, name, cdc);
            return RedirectToAction("Index");
        }

        public ActionResult Editar(Int32? Identificador)
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            ProyectoNegocio proyectobo = new ProyectoNegocio();
            ViewData.Model = proyectobo.ConsultarPorIdentificador(Identificador, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Actualizar(Proyecto nuevoproyecto)
        {

            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            List<Proyecto> proyectos = new ProyectoNegocio().ConsultarProyectos(cdc);
            for (int i = 0; i <= proyectos.Count - 1; i++)
            {
                if (proyectos[i].Nombre == nuevoproyecto.Nombre)
                {
                    ModelState.AddModelError("Nombre", "El Nombre especificado ya se encuentra en uso.");
                }
            }

            if (!ModelState.IsValid)
            {
                return View("Editar", nuevoproyecto);
            }
            Int32? id = nuevoproyecto.Identificador;
            String name = nuevoproyecto.Nombre;
            new ProyectoNegocio().ActualizarProyecto(id, name, cdc);
            return RedirectToAction("Index");
        }


        public ActionResult Eliminar(Proyecto nuevoproyecto)
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            Int32? id = nuevoproyecto.Identificador;
            List<Muestra> listademuestras = new List<Muestra>();
            Muestra muestra = new Muestra(cdc);
            muestra.Identificador = null;
            muestra.Idtipodemuestra = null;
            muestra.Iddeproyecto = id;
            muestra.Iddelugar = null;
            muestra.Fechadecaptura = DateTime.MinValue;
            muestra.Codigoderesponsable = null;
            muestra.Mac = null;
            muestra.Iddeequipo = null;
            muestra.Iddevariable = null;
            muestra.Valor = null;
            listademuestras = muestra.consultar();
            if (listademuestras.Count == 0)
            {
                new ProyectoNegocio().EliminarProyecto(id, "null", cdc);
                return RedirectToAction("Index");
            }

            ModelState.AddModelError("Identificador", " No se puede eliminar el proyecto especificado, se encuentra en uso.");
            ProyectoNegocio proyectobo = new ProyectoNegocio();
            ViewData.Model = proyectobo.ConsultarProyectos(cdc);
            return View("Index", ViewData.Model);


        }
    }
}
